package com.linxz.framework.protocol.callback;


import com.linxz.framework.protocol.resp.BaseBean;
import com.linxz.utils.Logger;


import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

/**
 * @author Linxz
 * 创建日期：2019年02月20日 20:13
 * version：1.0.0
 * 描述：
 */
public abstract class HttpCallBack <M extends BaseBean> implements Observer<M> {
    @Override
    public void onComplete() {
        onAfter();
    }

    @Override
    public void onSubscribe(Disposable disposable) {
        onBefore(disposable);
    }

    @Override
    public void onNext(M m) {
        if (m.isOk()){
            onResponse(m);
        }else{
            onErrors(m.getStatus(),m.getMsg());
        }
    }

    @Override
    public void onError(Throwable e) {
        if (e != null) {
            Logger.log(e.getMessage()+"");
        }
        onErrors("-9999","网络异常");
    }

    public  void onBefore(Disposable disposable ){

    }
    public  void onAfter( ){
    }

    public abstract void onErrors(String code,String msg);

    public abstract void onResponse(M m);

}
